웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > php

[PHP] 문자열 길이 가져오기, strlen(), mb_strlen()

Last Modified : 2019-01-08 / Created : 2016-06-02
47,112
View Count

문자열의 길이를 구하기 위한 방법을 알아보겠습니다. 만약 PHP에서 텍스트 길이가 몇 자인지 알아보려면 어떻게할까요? 아래에서 자세히 알아보세요!




# PHP 문자열의 길이값 가져오기

아래 함수는 php에서 문자열의 길이를 가져오는 함수로 strlen() 그리고 mb_strlen()을 사용합니다. 이 함수는 간단하게 문자열의 길이를 반환하여 줍니다. 간단한 사용방법은 아래와 같습니다.

strlen('webisfree');
mb_strlen('웹이즈프리', 'UTF-8');


보시는 것처럼, 두 가지의 함수가 있는데요... 위의 strlen()은 문자열의 byte 단위로 그 값을 반환하는 반면 mb_strlen() 함수의 경우 charset에 따라서 반환합니다. 이처럼 두개의 함수가 존재하는 이유는 언어에 따라 문자별로 byte 값이 틀리기 때문입니다. 아래는 이를 사용한 예제소스입니다.


! 영문, byte값을 반환하는 경우 strlen() 예제보기

아래는 영문 등의 바이트 값으로 반환하는 방법입니다.
<?php
  $test = 'webisfree';
  strlen($test);
?>

결과는 아래와 같습니다.
9
// 결과값으로 9를 반환


! 한글인 경우 mb_strlen() 함수 예제보기

한글의 경우 byte 단위로 값을 가져오는 것은 원하는 길이값과 다소 차이가 있습니다. 이 경우 아래처럼 사용할 수 있죠.

<?php
  $test = '웹이즈프리';
  mb_strlen($test, 'utf-8');
?>

실행하면 아래와 같이 출력됩니다.
5
// 결과값으로 5를 반환


참고로 뒤의 인수인 인코딩 값을 생략할 수도 있으며 이를 생략할 경우 내부의 인코딩값을 기본값으로 사용하게 됩니다. 그럼 만약에 mb_strlen()이 아닌 strlen()을 사용할 경우 결과는 어떻게 될지 알아보겠습니다. 앞에도 언급했듯이 반환값의 기준이 문자길이가 아닌 byte 크기가 됩니다.
<?php
  $test = '웹이즈프리';
  strlen($test);
?>

이번에는 결과가 어떻게될까요?
12
// 결과값으로 12를 반환

UTF-8의 경우 각각의 문자는 1byte에서 최대 4byte까지 사용됩니다. 즉 위 예제의 결과로 5에서 20까지의 값이 나올 수 있는 것입니다.



# 마치면서... 문자열 값은 왜 필요할까요?

많은 부분에서 사용되지만 데이터의 일정길이 이하값만을 불러오는 경우도 이에 해당합니다. 예를들어 내가 5글자 이내의 이름만 찾는다면 우선 문자열이 가진 길이값이 필요할 것입니다.

아래의 글도 찾고 계시지 않나요?

Previous

[PHP] 배열의 중복값 제거하기, array_unique()

Previous

[PHP] switch() case 제어문 알아보기